草庐IT

【C++】switch 语句

全部标签

C++ - 为什么程序在映射迭代器中使用 if 语句崩溃?

我是C++的新手,我试图在传递if语句的同时遍历映射。但是程序崩溃了。请帮我修复程序。#include#include#include#include#includeusingnamespacestd;intmain(){std::maph;std::map::iteratorit;h[1]=2;h[4]=5;for(it=h.begin();it!=h.end();it++){if(it->second>4){h.erase(it->first);}} 最佳答案 您正在删除for循环内的元素,指向已删除元素(即it)的迭代器将失效

c++ - 为什么我的 cout 语句在打开文本文件后不打印?

我正在尝试编写一个程序,我在其中读取文本文件,然后获取文本文件中的每一行并将它们存储在字符串vector中。我想我可以打开文本文件,但是我注意到在我打开文本文件之后,该点之后的任何内容都不会执行。例如,当我输入一个不存在的文件名时,我的main函数末尾有一个cout语句输出。但是,如果我输入一个确实存在的文件名,我从最后一个cout语句中得不到任何输出。有谁知道这是为什么?谢谢!intmain(){vectorline;stringfileName="test.txt";ifstreammyFile(fileName.c_str());inti=0;intcount=0;vectorl

c++ - 我的程序跳过返回语句

我的程序有这个功能:vectorLevel::getItemsAt(constPoint&pt){vectorvect(items.size());//copyallitemsatpt'spositiontovectremove_copy_if(items.begin(),items.end(),vect.begin(),boost::bind(matchesPosition,_1,pt));//updateLevelMapandreturnmap.setHasItem(pt,false);returnvect;}编译正常(我使用的是g++,我的gcc版本是4:4.4.1-1ubunt

c++ - 在 switch 语句中使用类类型 : is it better than using typeid operator?

我在下面看到了有关C++标准$6.4.2中switch语句的内容。Switch语句可以带一个条件。Theconditionshallbeofintegraltype,enumerationtype,orofaclasstypeforwhichasingleconversionfunctiontointegralorenumerationtypeexists(12.3).Iftheconditionisofclasstype,theconditionisconvertedbycallingthatconversionfunction,andtheresultoftheconversion

C++,预处理器语句

谁能解释一下这条语句的作用?#defineCONST_SIG(void(*)())1 最佳答案 此语句将CONST_SIG定义为1转换为指向不获取参数并返回void的函数的指针。如果您有一个指向函数的指针并且您可能会测试它的真实性,那么这可能很有用,然后CONST_SIG将为真。您可以试用cdecl程序,它在许多linux发行版中都可用,用于C声明的“英文翻译”。此实例中的示例输出:cdecl>explain(void(*)())castunknown_nameintopointertofunctionreturningvoid旁注

c++ - 附加条件语句使程序更快

看完Whyisitfastertoprocessasortedarraythananunsortedarray?,我在主循环中添加了一个额外的测试。似乎这个额外的测试使程序更快。intmain(){//GeneratedataconstunsignedarraySize=32768;intdata[arraySize];for(unsignedc=0;c=128)sum+=data[c];//Withthisadditionaltest,executionbecomesfasterif(data[c](clock()-start)/CLOCKS_PER_SEC;std::cout通过附

c++ - 如何使用 boost::spirit 验证代数语句?

我正在尝试扩展calculatorexample因此,解析器将确定代数语句是否为真,而不是解析和评估代数表达式。我的意思是这样的语句1+5*5-10=19-3(期望的解析器结果是true)和3-1=9(所需的解析器结果为false)。我必须承认我是boost::spirit的新手,目前我有点不知所措。但是,我确实觉得我对计算器示例的理解足够好,至少可以取得一些进展。使用提供的示例作为起点,语法如下所示:calculator():calculator::base_type(expression){usingqi::uint_;usingqi::_val;usingqi::_1;expre

c++ - 在 C++11 "foreach"语句中是否有任何(方便的)方法来检索当前迭代#?

我想知道是否有可能以某种方式从C++11foreach语句中提取当前迭代次数。在这样的代码中:for(auto&i:vect)if(i==0)zero_value_index=/*hereIwantmyindex*/;我找不到其他方法,只能使用老式的for和inti轻松获取我的索引。想法? 最佳答案 我不知道,你可以计算迭代次数:inti=0;for(auto&el:container){if(el==0)zero_value_index=i;++i;} 关于c++-在C++11"for

c++ - 哪些提升类型用于 switch-case 表达式比较?

以下程序在使用不同的编译器编译时打印“unknown”。为什么会这样?#include"stdio.h"constcharOPTION=(char)(unsignedchar)253;intmain(intargc,char*argv[]){unsignedcharc=253;switch(c){caseOPTION:printf("option\n");break;default:printf("unknown\n");break;}return0;}在查看C++标准(N36902013-05-05)时,我看到了switch的子句:6.4.2Theswitchstatement2Th

c++ - 我可以在 C++ switch 语句中匹配范围而不是单个值吗?

我是编程新手。是否可以使用,>在开关盒中?例如,.........inti;cin>>i;......switch(i){case20 最佳答案 C++不提供用于匹配范围的switch语法。当范围相对较小时,您可以提供case标签,并依赖fall-through:switch(i){case20:case21:case22:case23:case24:case25:doSomething();break;case26:case27:case28:case29:doSomethingElse();break;...}对于中等大小的范​